package com.eisei.factory.tbl;

import javax.persistence.*;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Timestamp;
import java.util.Collection;

/**
 * Created by equipo.crea on 3/08/14.
 */
@Entity
@Table(name = "TBL_USUARIOS", schema = "SIS_GES_CALIDAD", catalog = "")
public class TblUsuariosEntity {
    private String pkUsuario;
    private String password;
    private BigInteger intentos;
    private Timestamp fechaAlta;
    private Timestamp fechaActualiza;
    private Timestamp fechaUltimoAcceso;
    private Timestamp fechaVencePassord;
    private BigDecimal fkCatEstatus;
    private Collection<TblRelGrupoUsuarioEntity> tblRelGrupoUsuariosByPkUsuario;
    private TblCatEstatusEntity tblCatEstatusByFkCatEstatus;

    @Id
    @Column(name = "PK_USUARIO", nullable = false, insertable = true, updatable = true, length = 8, precision = 0)
    public String getPkUsuario() {
        return pkUsuario;
    }

    public void setPkUsuario(String pkUsuario) {
        this.pkUsuario = pkUsuario;
    }

    @Basic
    @Column(name = "PASSWORD", nullable = false, insertable = true, updatable = true, length = 60, precision = 0)
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Basic
    @Column(name = "INTENTOS", nullable = true, insertable = true, updatable = true, length = 1, precision = 0)
    public BigInteger getIntentos() {
        return intentos;
    }

    public void setIntentos(BigInteger intentos) {
        this.intentos = intentos;
    }

    @Basic
    @Column(name = "FECHA_ALTA", nullable = true, insertable = true, updatable = true, length = 7, precision = 0)
    public Timestamp getFechaAlta() {
        return fechaAlta;
    }

    public void setFechaAlta(Timestamp fechaAlta) {
        this.fechaAlta = fechaAlta;
    }

    @Basic
    @Column(name = "FECHA_ACTUALIZA", nullable = true, insertable = true, updatable = true, length = 7, precision = 0)
    public Timestamp getFechaActualiza() {
        return fechaActualiza;
    }

    public void setFechaActualiza(Timestamp fechaActualiza) {
        this.fechaActualiza = fechaActualiza;
    }

    @Basic
    @Column(name = "FECHA_ULTIMO_ACCESO", nullable = true, insertable = true, updatable = true, length = 7, precision = 0)
    public Timestamp getFechaUltimoAcceso() {
        return fechaUltimoAcceso;
    }

    public void setFechaUltimoAcceso(Timestamp fechaUltimoAcceso) {
        this.fechaUltimoAcceso = fechaUltimoAcceso;
    }

    @Basic
    @Column(name = "FECHA_VENCE_PASSORD", nullable = true, insertable = true, updatable = true, length = 7, precision = 0)
    public Timestamp getFechaVencePassord() {
        return fechaVencePassord;
    }

    public void setFechaVencePassord(Timestamp fechaVencePassord) {
        this.fechaVencePassord = fechaVencePassord;
    }

    @Basic
    @Column(name = "FK_CAT_ESTATUS", nullable = true, insertable = true, updatable = true, length = 0, precision = -127)
    public BigDecimal getFkCatEstatus() {
        return fkCatEstatus;
    }

    public void setFkCatEstatus(BigDecimal fkCatEstatus) {
        this.fkCatEstatus = fkCatEstatus;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        TblUsuariosEntity that = (TblUsuariosEntity) o;

        if (fechaActualiza != null ? !fechaActualiza.equals(that.fechaActualiza) : that.fechaActualiza != null)
            return false;
        if (fechaAlta != null ? !fechaAlta.equals(that.fechaAlta) : that.fechaAlta != null) return false;
        if (fechaUltimoAcceso != null ? !fechaUltimoAcceso.equals(that.fechaUltimoAcceso) : that.fechaUltimoAcceso != null)
            return false;
        if (fechaVencePassord != null ? !fechaVencePassord.equals(that.fechaVencePassord) : that.fechaVencePassord != null)
            return false;
        if (fkCatEstatus != null ? !fkCatEstatus.equals(that.fkCatEstatus) : that.fkCatEstatus != null) return false;
        if (intentos != null ? !intentos.equals(that.intentos) : that.intentos != null) return false;
        if (password != null ? !password.equals(that.password) : that.password != null) return false;
        if (pkUsuario != null ? !pkUsuario.equals(that.pkUsuario) : that.pkUsuario != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = pkUsuario != null ? pkUsuario.hashCode() : 0;
        result = 31 * result + (password != null ? password.hashCode() : 0);
        result = 31 * result + (intentos != null ? intentos.hashCode() : 0);
        result = 31 * result + (fechaAlta != null ? fechaAlta.hashCode() : 0);
        result = 31 * result + (fechaActualiza != null ? fechaActualiza.hashCode() : 0);
        result = 31 * result + (fechaUltimoAcceso != null ? fechaUltimoAcceso.hashCode() : 0);
        result = 31 * result + (fechaVencePassord != null ? fechaVencePassord.hashCode() : 0);
        result = 31 * result + (fkCatEstatus != null ? fkCatEstatus.hashCode() : 0);
        return result;
    }

    @OneToMany(mappedBy = "tblUsuariosByFkUsuario")
    public Collection<TblRelGrupoUsuarioEntity> getTblRelGrupoUsuariosByPkUsuario() {
        return tblRelGrupoUsuariosByPkUsuario;
    }

    public void setTblRelGrupoUsuariosByPkUsuario(Collection<TblRelGrupoUsuarioEntity> tblRelGrupoUsuariosByPkUsuario) {
        this.tblRelGrupoUsuariosByPkUsuario = tblRelGrupoUsuariosByPkUsuario;
    }

    @ManyToOne
    @JoinColumn(name = "FK_CAT_ESTATUS", referencedColumnName = "PK_CAT_ESTATUS")
    public TblCatEstatusEntity getTblCatEstatusByFkCatEstatus() {
        return tblCatEstatusByFkCatEstatus;
    }

    public void setTblCatEstatusByFkCatEstatus(TblCatEstatusEntity tblCatEstatusByFkCatEstatus) {
        this.tblCatEstatusByFkCatEstatus = tblCatEstatusByFkCatEstatus;
    }
}
